<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	   xmlns:aop="http://www.springframework.org/schema/aop"
	   xmlns:tx="http://www.springframework.org/schema/tx"
	   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
	   default-autowire="byName" default-lazy-init="true">

	<!-- 属性文件读入 -->
	<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>classpath*:conf/jdbc.properties</value>
				<value>classpath*:conf/mail.properties</value>
				<value>classpath*:conf/swie.properties</value>
			</list>
		</property>
	</bean>

	<!-- 支持 @Transactional 标记 -->
	<tx:annotation-driven/>

	<!-- 支持 @AspectJ 标记-->
	<aop:aspectj-autoproxy/>

	<!-- 以AspectJ方式 定义 AOP -->
	<aop:config proxy-target-class="true">
		<aop:advisor pointcut="execution(* com.ambow.core.dao.*Dao.*(..))" advice-ref="txAdvice"/>
		<aop:advisor pointcut="execution(* com.ambow.trainingengine.methodtechnique.service.*Service.*(..))" advice-ref="txAdvice"/>
		
		<aop:advisor pointcut="execution(* com.ambow.trainingengine.exam.service.*Service.*(..))" advice-ref="txAdvice"/>
		<aop:advisor pointcut="execution(* com.ambow.studyflow.service.IProcessService.*(..))" advice-ref="txAdvice"/>
		<aop:advisor pointcut="execution(* com.ambow.trainingengine.itembank.service.*Service.*(..))" advice-ref="txAdvice"/>
		<aop:advisor pointcut="execution(* com.ambow.trainingengine.wordbank.service.*Service.*(..))" advice-ref="txAdvice"/>
		<aop:advisor pointcut="execution(* com.ambow.trainingengine.studyflow.service.*Service.*(..))" advice-ref="txAdvice"/>
		<aop:advisor pointcut="execution(* com.ambow.trainingengine.policy.service.*Service.*(..))" advice-ref="txAdvice"/>
		<aop:advisor pointcut="execution(* com.ambow.trainingengine.web.service.*Service.*(..))" advice-ref="txAdvice"/>
		<aop:advisor pointcut="execution(* com.ambow.trainingengine.report.service.*Service.*(..))" advice-ref="txAdvice"/>
		<aop:advisor pointcut="execution(* com.ambow.trainingengine.systemsecurity.service.*Service.*(..))" advice-ref="txAdvice"/>
		<aop:advisor pointcut="execution(* com.ambow.trainingengine.freshword.service.*Service.*(..))" advice-ref="txAdvice"/>
		<aop:advisor pointcut="execution(* com.ambow.trainingengine.bug.service.*Service.*(..))" advice-ref="txAdvice"/>
		<aop:advisor pointcut="execution(* com.ambow.trainingengine.attention.service.*Service.*(..))" advice-ref="txAdvice"/>
        <!--
		<aop:advisor pointcut="execution(* com.ambow.flowExample.security.service.*Service.*(..))" advice-ref="txAdvice"/>
		<aop:advisor pointcut="execution(* com.ambow.flowExample.search.service.*Service.*(..))" advice-ref="txAdvice"/>
		-->
	</aop:config>

	<!-- 基本事务定义,使用transactionManager作事务管理,默认get*方法的事务为readonly,其余方法按默认设置.
			 默认的设置请参考Spring文档事务一章. -->
	<tx:advice id="txAdvice">
		<tx:attributes>
			<tx:method name="get*" propagation="REQUIRED" rollback-for="" read-only="true"/>
			<tx:method name="find*" propagation="REQUIRED" rollback-for="" read-only="true"/>
			<tx:method name="*" propagation="REQUIRED" rollback-for=""/>
		</tx:attributes>
	</tx:advice>

    <!--Spring Mail Sender-->
    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
        <property name="host" value="${smtp.host}"/>
        <property name="username" value="${smtp.username}"/>
        <property name="password" value="${smtp.password}"/>
		<property name="defaultEncoding" value="${smtp.defaultEncoding}"/>
		<property name="port"  value="${smtp.port}"/>
        <property name="javaMailProperties">
            <props>
                <prop key="mail.smtp.auth">${mail.smtp.auth}</prop>
            </props>
        </property>		
    </bean>
	
	 <!--swis接口bean配置-->
	 <bean id="swieBean" class="com.ambow.trainingengine.util.SwieBean">
        <property name="swieUrl" value="${swie.swieUrl}"/>
        <property name="sysUserType" value="${swie.sysUserType}"/>
        <property name="sysAbbr" value="${swie.sysAbbr}"/>
		<property name="sysCode" value="${swie.sysCode}"/>
		<property name="userUrl"  value="${swie.userUrl}"/>
		<property name="swiePostUrl"  value="${swie.swiePostUrl}"/>
		<property name="writeImgUrl"  value="${swie.writeImgUrl}"/>
		<property name="articleStatusUrl"  value="${swie.articleStatusUrl}"/>
		<property name="use" value="${swie.use}"/>
    </bean>
	
</beans>